// 找到所有红色表格的td
var alltds = document.querySelectorAll("#board2 td");
// 当前回合该哪方下
var turn = "black";
var round = document.getElementById("round");
var finish = false; 
var his = [];
// td的点击事件函数
function tdClick(e) {
    if(finish){
        return;
    }
    // e.target.style.backgroundColor = "red";
    var td = e.target;
    var side = td.getAttribute("chess");
    if (side) {
        return;
    }
    td.setAttribute("chess", turn);
    winCheck(e.target.index);
    if (turn == "black") {
        turn = "white";
        round.textContent = "白方回合";
    } else {
        turn = "black";
        round.textContent = "黑方回合";
    }
    his.push(e.target);
}
for (var i = 0; i < alltds.length; i++) {
    alltds[i].onclick = tdClick;
    alltds[i].index = i;
}
function back() {
    finish = false;
    if (his.length > 0) {
        var td = his.pop();
        td.removeAttribute("chess");
        if (turn == "black") {
            turn = "white";
            round.textContent = "白方回合";
        } else {
            turn = "black";
            round.textContent = "黑方回合";
        }
    }
}
function restart() {
    window.location.reload();
}
// 判断胜利的函数
function winCheck(index) {
    if (horizontalCheck(index)||verticalCheck(index)||tlbrCheck(index)||trblCheck(index)) {
        finish = true;
        alert((turn=="black"?"黑":"白")+ "方胜利");
    }
    // 横向检查函数
    function horizontalCheck(index) {
        var num = 1;
        var currentIndex = index;
        var hasNext = currentIndex % 19 != 0 && alltds[currentIndex - 1].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex--;
            hasNext = currentIndex % 19 != 0 && alltds[currentIndex - 1].getAttribute("chess") == turn;
        }
        var currentIndex = index;
        var hasNext = currentIndex % 19 != 18 && alltds[currentIndex + 1].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex++;
            hasNext = currentIndex % 19 != 18 && alltds[currentIndex + 1].getAttribute("chess") == turn;
        }
        return num >= 5;
    }
    // 纵向检查函数
    // 上
    function verticalCheck(index) {
        var num = 1;
        var currentIndex = index;
        var hasNext = currentIndex >=19 && alltds[currentIndex - 19].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex-=19;
            hasNext = currentIndex >=19 && alltds[currentIndex - 19].getAttribute("chess") == turn;
        }
        // 下
        var currentIndex = index;
        var hasNext = currentIndex < 342 && alltds[currentIndex + 19].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex+=19;
            hasNext = currentIndex < 342 && alltds[currentIndex + 19].getAttribute("chess") == turn;
        }
        return num >= 5;
    }
    // 斜线左上到右下的检查
    function tlbrCheck(index) {
        var num = 1;
        var currentIndex = index;
        var hasNext = currentIndex%19!=0 && currentIndex >=19 && alltds[currentIndex - 20].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex-=20;
            hasNext = currentIndex%19!=0 && currentIndex >=19 && alltds[currentIndex - 20].getAttribute("chess") == turn;
        }
        var currentIndex = index;
        var hasNext = currentIndex < 342 && currentIndex%19!=18 && alltds[currentIndex + 20].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex+=20;
            hasNext = currentIndex < 342 && currentIndex%19!=18 && alltds[currentIndex + 20].getAttribute("chess") == turn;
        }
        return num >= 5;
    }
    // 斜线右上到左下的检查
    function trblCheck(index) {
        var num = 1;
        var currentIndex = index;
        var hasNext = currentIndex%19!=18 && currentIndex >=19 && alltds[currentIndex - 18].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex-=18;
            hasNext = currentIndex%19!=18 && currentIndex >=19 && alltds[currentIndex - 18].getAttribute("chess") == turn;
        }
        var currentIndex = index;
        var hasNext = currentIndex < 342 && currentIndex%19!=0 && alltds[currentIndex + 18].getAttribute("chess") == turn;
        while (hasNext) {
            num++;
            currentIndex+=18;
            hasNext = currentIndex < 342 && currentIndex%19!=0 && alltds[currentIndex + 18].getAttribute("chess") == turn;
        }
        return num >= 5;
    }
}